Top 10k strings from ROM Routinen (1987)(Klaus Jahn)(de).z80
in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [Z80] (TOSEC-v2007-01-01) /
Back to the directory listing
2 hl' - Register holen.~ exx" 2 [siehe ""Farben festlegen""]" 1 x8DDD8|($$ 1 und auf 'v' druecken ! 1 c$=" auf Calculatorstack legen" 1 bQIIF"AII6 1 a$="Welche Seite moechten Sie sehen [1..24] ?\"+ 1 a$="Alles klar ! Seite "+s$+" erscheint sofort.": 1 Cassettenrekorder einschalten 1 Bitte Cassettenrekorder ab- 1 @H~IIB TT8@ 1 6III6&III> 1 +" call 6037~~hl = hl * de:\"+ 1 +" call 5829" 1 +" call 5808~~Berechnen einer Bildschirm-Pixel-Adresse~nach hl. Angegeben wird die (X,Y)-~Pixelposition:~~a) ld c,{X-Koordinate}~b) ld b,{Y-Koordinate}~c) call 8874~d) hl gibt die SCREEN$-Adresse an." 1 +" call 4656" 1 +" call 4185~~BASIC-Zeilenkursor runter:\"+ 1 +" call 4083" 1 +" call 3884~~Ausgabe eines Listings:\"+ 1 +" call 12457" 1 +" call 12171~~Scrollen einer bestimmten Bildzeilen-~zahl (von unten gesehen):~~a) ld b,{Zeilenzahl}~b) call 3584" 1 +" call 11747" 1 +" call 11733" 1 +" call 11682" 1 +" call 11563" 1 +" call 11560" 1 +" call 11547~Akku auf Buchstabencode pruefen:call 11405~Akku auf alphanumerisch pruefen:call 11400" 1 (DD88DDD 8DD( 1 'EEE9>III2 1 "7","0100","BASIC-Programm loeschen:\"+ 1 "6","0710"," 1 "4","1005"," 1 "3","0100","SAVE Header:~~a) ld ix,{Startadresse des Headers}~b) ld de,17~c) xor a~d) call 1218 SAVE-Routine" 1 "3","0100","PLOT x,y:~~a) ld c,{x} X-Koordinate in c~b) ld b,{y} Y-Koordinate in b~c) call 8927 PLOT-Routine" 1 "3","0100","LOAD CODE:~~a) ld ix,{Anfangsadresse des Codes}~b) ld de,{Laenge des Codes}~c) ld a,255~d) scf~e) call 1366 LOAD-Routine" 1 "3","0100","BEEP x/y,z:~~a) ld a,{x} Dividend der Tonlaenge~ call 11560 "+c$+"~b) ld a,{y} Divisor der Tonlaenge~ call 11560 "+c$ 1 "3","0100","#3 Ausdruck auf Drucker~#2 Ausdruck auf Screen Zeile 0 bis 21~#1 Ausdruck auf Screen Zeile 22 bis 23~#0 1 "2","0100","a) call 3405~b) Festlegung der gewuenschten Farb-~anweisung mit rst 16~c) call 7341~~MEM-Anweisung:~~a) call 7962~b) ld hl,65535~c) and a~d) sbc hl,bc~e) der in BASIC noch verfuegbare Bereich~ steht jetzt im hl-Register." 1 "2","0100","VERIFY CODE:~~a) ld ix,{Startadresse des Codes}~b) ld de,{Laenge der Codes}~c) ld a,255~d) and a~call 1366 LOAD-Routine" 1 "2","0100","Sie haben sich bestimmt schon darueber~geaergert, dass Sie In Maschinensprache~auf den BASIC-Komfort verzichten mu@ten.~Das soll sich nun auch fuer Sie aendern.~Ich gebe Ihnen hier eine komplette Auf-~listung der gesamten nuetzlichen ROM-~Routinen im Spectrum-ROM." 1 "2","0100","PRINT x: {x liegt im Bereich 0 - 9999}~~a) ld bc,{x} Zahl in bc-Register bringenb) call 6683 Zeilennummerdruck-Routine~~PRINT x:~~a) ld bc,{x} Zahl~b) call 11563 "+c$+"~c) call 11747 Zahlenausdruck." 1 "2","0100","POINT (x,y):~~a) ld c,{x}~b) ld b,{y}~c) call 8910~d) call 7833~e) Ergebnis (1 oder 0) befindet sich im Akku.~~SCREEN$ (y,x):~~a) ld a,{y} Y-Koordinate~ call 11560 "+c$+"~b) ld a,{x} X-Koordinate~ call 11560 "+c$+"~c) call 9525 SCREEN$-Routine~d) call 11249 String-Parameter vom Cal-" 1 "2","0100","Loeschen von Calculatorstack,~Workspace und Editorspace:\"+ 1 "2","0100","Loeschen einer bestimmten Bildzeilen-~zahl (von unten gesehen):~~a) ld b,{Zeilenzahl}~b) call 3652~~Ausgabe einer Fehlermeldung:~~Dazu wird der Befehl rst 8 benutzt. Der~Code der Fehlermeldung wird einfach als~ein Byte dem rst 8-Befehl angefuegt.~Man befindet sich nach aufruf dieses~Befehls sofort wieder im BASIC.~Z.B. wird die Meldung 0 OK so gemacht:" 1 "2","0100","Jetzt befinden sich die Stringparameter~(Laenge und Startadresse) in den~Registern bc und de. Um das Ergebnis~der Funktion SCREEN$ zu bekommen,~schreibt man einfach:~~e) ld a,(de)~~und das Ergebnis (der ASCII-Code)~befindet sich im Akku." 1 "2","0100","FARBEN FESTLEGEN:~~Als Beispiel geben wir uns an, wie die~Befehle~~PAPER 7: INK 9: OVER 1 in Assembler~aussehen:\"+ 1 "2","0100","Der Calculator:~~Wie man mit dem rst 40-Befehl umgeht,~haben Sie ja schon bei dem BEEP-Befehl~gesehen. Der Calculator kann immer nur~den obersten oder die obersten 2 Calcula-~torstack-Elemente behandeln. Das Ergeb-~nis wird dann wieder auf den Stack~zurueckgelegt.~Ich gebe Ihnen jetzt eine komplette~Auflistung der so genannten Calculator-~opcodes, die die saemtlichen Spectrum-~Funktionen darstellen." 1 "2","0100","DRAW x,y,z:~~a) X- und Y- Koordinaten wie bei~ DRAW x,y auf den Calculatorstack~ bringen~b) ld a,{z} Radiantenzahl~ call 11560 "+c$+"~c) hl' -Register sichern (siehe DRAW x,y)" 1 "2","0100","CLS: 1 "2","0100","Bei folgenden 3 Pruefroutinen trifft~die Bedingung zu, wenn das Carry-Flag~=0 ist:~~Akku auf Zifferncode pruefen:\"+ 1 "2","0100","BRIGHT x: 1 "1815","culatorstack holen~[weiter auf der naechsten Seite !]" 1 "1700","obersten Calculatorstackwert~ins bc-Registerpaar bringen:\"+ 1 "1700","SCROLL: 1 "1600","a) rst 8~b) Byt. #255 {Meldecode minus 1}" 1 "1500","PAUSE x:~~a) res 5,(iy+1) Eingabe freimachen~b) ld bc,{x} Laenge in msec. nach bc~c) call 7997" 1 "1500","EDIT:\"+ 1 "1500","BORDER x:~~a) ld a,{x} Farbe in Akku bringen~b) call 8859 BORDER-Routine aufrufen." 1 "1400","obersten Calculatorstackwert~in den Akku bringen:\"+ 1 "1400","Diese Opcodes werden einfach als Bytes~hinter dem rst 40-Befehl angefuegt." 1 "1300","a) ld a,{x} Kanalnummer in Akku~b) call 5633 Kanal oeffnen~~Die Kanaele lauten (siehe naechste Seite):" 1 "1300","a = c + 10 * a:\"+ 1 "1300","PRINT a$:~~a) ld de,{Startadresse der Zeichenkette}~b) ld bc,{Laenge der Zeichenkette}~c) call 8252 Textdruck." 1 "1200","PRINT AT y,x:~~a) ld b,{24-y}~b) ld c,{33-x}~c) call 3545" 1 "1200","ATTR (y,x):~~a) ld c,{y}~b) ld b,{x}~c) call 9603~d) call 7833~e) Das Ergebnis steht im c-Register." 1 "1100","d) exx~ push hl 1 "1100","c) exx~ push hl 1 "1100","bc - Registerinhalt~"+c$+":\"+ 1 "1100","Ausgabe von Text, dessen letztes Byte mit~gesetztem bit 7 markiert ist:~~a) ld de,{Startadresse des Textes}~b) call 3082~~BASIC-Zeilenkursor hoch:\"+ 1 "1","0100","Stringdefinition:~~Man kann einen String schaffen, indem man~seine Startadresse ins de- und seine~Laenge ins bc-Register bringt.~Der Akku mu@ 0 sein; dann werden diese~5 Bytes mit der Routine~~ call 10929~auf den Calculatorstack gebracht.~~Mit der Routine~ call 11249~hingegen kann man ein Stringparameter~vom Calculatorstapel herunterholen." 1 "1","0100","LIST x:~~a) ld hl,{Startadresse von Zeile x}~b) call 6229~~LOAD Header:~~a) ld ix,{Anfangsadresse des Headers}~b) ld de,17~c) xor a~d) scf~e) call 1366 LOAD-Routine" 1 "0900","d) call 9108 DRAW II - Routine~e) hl' -Register holen (Siehe DRAW x,y).~~FLASH: 1 "0900","SOUND x,y:~~(Erzeugt einen kurzen Pfeifton. x ist~die Tontiefe und liegt im Bereich~[1..65535]. y ist die Tonlaenge und~liegt im Bereich [0..65535].)~~a) ld hl,{x}~b) ld de,{y}~c) call 949" 1 "0900","SAVE CODE:~~a) ld ix,{Startadresse des Codes}~b) ld de,{Laenge des Codes}~c) ld a,255~d) call 1218 SAVE-Routine." 1 "0900","NEW: 1 "0800","PRINT CHR$(x):~~a) ld a,{x} Code des Zeichens in Akku~b) rst 16 1 "0800","Die normale temporaere Farbzuweisung~geschieht ganz einfach mit rst 16.~Soll z.B. PAPER 7 ausgedrueckt werden,~so schreibt man:~~a) ld a,17 1 "0800","Au@erdem nenne ich Ihnen die Anwendung~mit den Registern, die die Routinen be-~nutzen.~Sie werden sehen, da@ einige Routinen mit~dem so genannten Calculatorstack arbeiten;dieser ist eine Art Stapel, um 5-Byte-~Fliesskommazahlen oder Stringparameter~abzuspeichern, aber dazu Spaeter mehr !~Ich zeige Ihnen jetzt die wichtigsten~Routinen:" 1 "0800","Akkuinhalt~"+c$+":\"+ 1 "0700","c) rst 40 1 "0700","PRINT #x:~~Bevor man irgendetwas zum erstenmal aus-~druckt, mu@ der Bildkanal mit PRINT#~geoeffnet werden ! Das geschieht so:" 1 "0500","Ausdruck des obersten~Calculatorstackwertes:\"+ 1 "0404","Die nuetzlichsten","1220","ROUTINEN","1802"," 1 "0300","Calculatorstack loeschen:\"+ 1 ","1305"," 1 ","1205"," 1 ","1105"," 1 ","0910"," 1 ","0810"," 1 stellen ! 1 hl' - Register sichern~ exx~e) call 9005 CIRCLE-Routine aufrufen~f) exx~ pop hl 1 hl' - Register sichern~ exx~d) call 9335 DRAW I - Routine~e) exx~ pop hl 1 call 7406" 1 call 4535~~OVER: 1 call 3756~~DRAW x,y:~~a) ld a,{x} X-Koordinate~ call 11560 "+c$+"~b) ld a,{y} Y-Koordinate~ call 11560 "+c$ 1 call 3435~~COPY: 1 call 3282~~STOP: 1 auf Calculatorstack legen 1 [siehe ""Farben setzen""]~~CIRCLE x,y,z:~~a) ld a,{x} X-Koordinate~ call 11560 "+c$+"~b) ld a,{y} Y-Koordinate~ call 11560 "+c$+"~c) ld a,{z} Radius~ call 11560 "+c$ 1 [siehe ""Farben festlegen""]~~PAPER: 1 [siehe ""Farben festlegen""]~~INVERSE: 1 [siehe ""Farben festlegen""]~~INK: 1 Zahlen dividieren~ Byt. #56 Ende des Calculators~d) ld a,{z} Tonhoehe~ call 11560 "+c$+"~e) call 1016 BEEP-Routine aufrufen." 1 Calculatoraufruf~ Byt. #5 1 Ausdruck" 1 = zurueck 1 = Seite anwaehlen 1 1987 written by Klaus Jahn" 1 1987 written by Klaus Jahn 1 -""-~#255 Workspace~#254 Keyboard" 1 (fuer PAPER 7)~d) rst 16~~Sollen die Farben allerdings bleiben~(nach CLS oder PRINT #), dann mu@ man mit~folgenden call-Befehlen arbeiten:" 1 (=ASCII-Code von PAPER)~b) rst 16~c) ld a,7